<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<meta name="theme-color" content="#222">
<meta name="generator" content="Hexo 5.4.0">


  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32-next.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16-next.png">
  <link rel="mask-icon" href="/images/logo.svg" color="#222">

<link rel="stylesheet" href="/css/main.css">



<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.3/css/all.min.css" integrity="sha256-2H3fkXt6FEmrReK448mDVGKb3WW2ZZw35gI7vqHOE4Y=" crossorigin="anonymous">
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/animate.css@3.1.1/animate.min.css" integrity="sha256-PR7ttpcvz8qrF57fur/yAx1qXMFJeJFiA6pSzWi0OIE=" crossorigin="anonymous">

<script class="next-config" data-name="main" type="application/json">{"hostname":"example.com","root":"/","images":"/images","scheme":"Pisces","version":"8.7.0","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12},"copycode":false,"bookmark":{"enable":false,"color":"#222","save":"auto"},"fancybox":false,"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"prism":false,"i18n":{"placeholder":"Searching...","empty":"We didn't find any results for the search: ${query}","hits_time":"${hits} results found in ${time} ms","hits":"${hits} results found"}}</script><script src="/js/config.js"></script>
<meta name="description" content="http(二次复盘）http&#x2F;发展历程http1.1 优势&#x2F;主要是针对其格式方面的  简单  只由报文首部（由简单的文本形式构成）和报文主体来构成，结构简单   灵活易扩展  没有对http请求的方法&#x2F;响应码做死规定，开发人员可以进行扩展  它的灵活性还体现在，它本身是在应用层的&#x2F;之下的其它层可以随意变化  https  直接就在http和tcp之间加入了TLS&#x2F;SSL安全传输层   http3.">
<meta property="og:type" content="article">
<meta property="og:title" content="HTTP">
<meta property="og:url" content="http://example.com/2020/12/19/http(%E4%BA%8C%E6%AC%A1%E5%A4%8D%E7%9B%98%EF%BC%89/index.html">
<meta property="og:site_name" content="Hexo">
<meta property="og:description" content="http(二次复盘）http&#x2F;发展历程http1.1 优势&#x2F;主要是针对其格式方面的  简单  只由报文首部（由简单的文本形式构成）和报文主体来构成，结构简单   灵活易扩展  没有对http请求的方法&#x2F;响应码做死规定，开发人员可以进行扩展  它的灵活性还体现在，它本身是在应用层的&#x2F;之下的其它层可以随意变化  https  直接就在http和tcp之间加入了TLS&#x2F;SSL安全传输层   http3.">
<meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2020-12-19T04:20:05.000Z">
<meta property="article:modified_time" content="2021-07-15T07:14:59.080Z">
<meta property="article:author" content="John Doe">
<meta name="twitter:card" content="summary">


<link rel="canonical" href="http://example.com/2020/12/19/http(%E4%BA%8C%E6%AC%A1%E5%A4%8D%E7%9B%98%EF%BC%89/">



<script class="next-config" data-name="page" type="application/json">{"sidebar":"","isHome":false,"isPost":true,"lang":"en","comments":true,"permalink":"http://example.com/2020/12/19/http(%E4%BA%8C%E6%AC%A1%E5%A4%8D%E7%9B%98%EF%BC%89/","path":"2020/12/19/http(二次复盘）/","title":"HTTP"}</script>

<script class="next-config" data-name="calendar" type="application/json">""</script>
<title>HTTP | Hexo</title>
  




  <noscript>
    <link rel="stylesheet" href="/css/noscript.css">
  </noscript>
</head>

<body itemscope itemtype="http://schema.org/WebPage" class="use-motion">
  <div class="headband"></div>

  <main class="main">
    <header class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-container">
  <div class="site-nav-toggle">
    <div class="toggle" aria-label="Toggle navigation bar" role="button">
        <span class="toggle-line"></span>
        <span class="toggle-line"></span>
        <span class="toggle-line"></span>
    </div>
  </div>

  <div class="site-meta">

    <a href="/" class="brand" rel="start">
      <i class="logo-line"></i>
      <h1 class="site-title">Hexo</h1>
      <i class="logo-line"></i>
    </a>
  </div>

  <div class="site-nav-right">
    <div class="toggle popup-trigger">
    </div>
  </div>
</div>



<nav class="site-nav">
  <ul class="main-menu menu">
        <li class="menu-item menu-item-首页"><a href="/" rel="section"><i class="fa fa-home fa-fw"></i>首页</a></li>
        <li class="menu-item menu-item-分类"><a href="/categories/" rel="section"><i class="fa fa-th fa-fw"></i>分类</a></li>
        <li class="menu-item menu-item-archives"><a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>Archives</a></li>
  </ul>
</nav>




</div>
        
  
  <div class="toggle sidebar-toggle" role="button">
    <span class="toggle-line"></span>
    <span class="toggle-line"></span>
    <span class="toggle-line"></span>
  </div>

  <aside class="sidebar">

    <div class="sidebar-inner sidebar-nav-active sidebar-toc-active">
      <ul class="sidebar-nav">
        <li class="sidebar-nav-toc">
          Table of Contents
        </li>
        <li class="sidebar-nav-overview">
          Overview
        </li>
      </ul>

      <div class="sidebar-panel-container">
        <!--noindex-->
        <div class="post-toc-wrap sidebar-panel">
            <div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#http-%E4%BA%8C%E6%AC%A1%E5%A4%8D%E7%9B%98%EF%BC%89"><span class="nav-number">1.</span> <span class="nav-text">http(二次复盘）</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#http-%E5%8F%91%E5%B1%95%E5%8E%86%E7%A8%8B"><span class="nav-number">1.1.</span> <span class="nav-text">http&#x2F;发展历程</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#http1-1"><span class="nav-number">1.1.1.</span> <span class="nav-text">http1.1</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#HTTPS"><span class="nav-number">1.1.2.</span> <span class="nav-text">HTTPS</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#http2-0"><span class="nav-number">1.1.3.</span> <span class="nav-text">http2.0</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#http3-0%E7%89%88%E6%9C%AC"><span class="nav-number">1.1.4.</span> <span class="nav-text">http3.0版本</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%AF%B7%E6%B1%82%E6%96%B9%E6%B3%95"><span class="nav-number">1.2.</span> <span class="nav-text">请求方法</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#GET"><span class="nav-number">1.2.1.</span> <span class="nav-text">GET</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#POST"><span class="nav-number">1.2.2.</span> <span class="nav-text">POST</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#put%EF%BC%9A%E5%AE%8C%E5%85%A8%E6%9B%B4%E6%96%B0"><span class="nav-number">1.2.3.</span> <span class="nav-text">put：完全更新</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#patch"><span class="nav-number">1.2.4.</span> <span class="nav-text">patch</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%8A%B6%E6%80%81%E7%A0%81"><span class="nav-number">1.3.</span> <span class="nav-text">状态码</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%AE%83%E6%9C%89%E5%93%AA%E4%BA%9B%E5%88%86%E7%B1%BB%E5%91%A2"><span class="nav-number">1.3.1.</span> <span class="nav-text">它有哪些分类呢</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%B8%B8%E8%A7%81%E7%8A%B6%E6%80%81%E7%A0%81"><span class="nav-number">1.3.2.</span> <span class="nav-text">常见状态码</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E7%BB%84%E6%88%90"><span class="nav-number">1.4.</span> <span class="nav-text">组成</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E6%89%80%E8%B0%93%E8%B6%85%E6%96%87%E6%9C%AC"><span class="nav-number">1.4.1.</span> <span class="nav-text">所谓超文本</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E4%BC%A0%E8%BE%93"><span class="nav-number">1.4.2.</span> <span class="nav-text">传输</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%AE%83%E6%98%AF%E4%B8%80%E7%A7%8D%E5%8D%8F%E8%AE%AE"><span class="nav-number">1.4.3.</span> <span class="nav-text">它是一种协议</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#Header"><span class="nav-number">1.5.</span> <span class="nav-text">Header</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#requiredheader"><span class="nav-number">1.5.1.</span> <span class="nav-text">requiredheader</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#responseheader"><span class="nav-number">1.5.2.</span> <span class="nav-text">responseheader</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E5%93%8D%E5%BA%94%E6%A0%BC%E5%BC%8F"><span class="nav-number">1.6.</span> <span class="nav-text">响应格式</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%93%8D%E5%BA%94%E8%A1%8C"><span class="nav-number">1.6.1.</span> <span class="nav-text">响应行</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%93%8D%E5%BA%94%E5%A4%B4%E9%83%A8"><span class="nav-number">1.6.2.</span> <span class="nav-text">响应头部</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E5%93%8D%E5%BA%94%E4%BD%93"><span class="nav-number">1.6.3.</span> <span class="nav-text">响应体</span></a></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E8%AF%B7%E6%B1%82%E6%A0%BC%E5%BC%8F"><span class="nav-number">1.7.</span> <span class="nav-text">请求格式</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#%E8%AF%B7%E6%B1%82%E8%A1%8C"><span class="nav-number">1.7.1.</span> <span class="nav-text">请求行</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E8%AF%B7%E6%B1%82%E5%A4%B4%E9%83%A8"><span class="nav-number">1.7.2.</span> <span class="nav-text">请求头部</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E8%AF%B7%E6%B1%82%E6%AD%A3%E6%96%87"><span class="nav-number">1.7.3.</span> <span class="nav-text">请求正文</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#%E8%81%94%E6%83%B3%E6%9C%80%E8%BF%91%E8%A1%8C%E6%83%85%E5%92%8B%E6%A0%B7%EF%BC%8C"><span class="nav-number">1.7.4.</span> <span class="nav-text">联想最近行情咋样，</span></a></li></ol></li></ol></li></ol></div>
        </div>
        <!--/noindex-->

        <div class="site-overview-wrap sidebar-panel">
          <div class="site-overview">
            <div class="site-author site-overview-item animated" itemprop="author" itemscope itemtype="http://schema.org/Person">
  <p class="site-author-name" itemprop="name">John Doe</p>
  <div class="site-description" itemprop="description"></div>
</div>
<div class="site-state-wrap site-overview-item animated">
  <nav class="site-state">
      <div class="site-state-item site-state-posts">
        <a href="/archives/">
          <span class="site-state-item-count">20</span>
          <span class="site-state-item-name">posts</span>
        </a>
      </div>
      <div class="site-state-item site-state-categories">
          <a href="/categories/">
        <span class="site-state-item-count">12</span>
        <span class="site-state-item-name">categories</span></a>
      </div>
  </nav>
</div>



          </div>
        </div>
      </div>
    </div>
  </aside>
  <div class="sidebar-dimmer"></div>


    </header>

    
  <div class="back-to-top" role="button" aria-label="Back to top">
    <i class="fa fa-arrow-up"></i>
    <span>0%</span>
  </div>

<noscript>
  <div class="noscript-warning">Theme NexT works best with JavaScript enabled</div>
</noscript>


    <div class="main-inner post posts-expand">


  


<div class="post-block">
  
  

  <article itemscope itemtype="http://schema.org/Article" class="post-content" lang="en">
    <link itemprop="mainEntityOfPage" href="http://example.com/2020/12/19/http(%E4%BA%8C%E6%AC%A1%E5%A4%8D%E7%9B%98%EF%BC%89/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.gif">
      <meta itemprop="name" content="John Doe">
      <meta itemprop="description" content="">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="Hexo">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          HTTP
        </h1>

        <div class="post-meta-container">
          <div class="post-meta">
    <span class="post-meta-item">
      <span class="post-meta-item-icon">
        <i class="far fa-calendar"></i>
      </span>
      <span class="post-meta-item-text">Posted on</span>

      <time title="Created: 2020-12-19 12:20:05" itemprop="dateCreated datePublished" datetime="2020-12-19T12:20:05+08:00">2020-12-19</time>
    </span>
    <span class="post-meta-item">
      <span class="post-meta-item-icon">
        <i class="far fa-folder"></i>
      </span>
      <span class="post-meta-item-text">In</span>
        <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
          <a href="/categories/HTTP/" itemprop="url" rel="index"><span itemprop="name">HTTP</span></a>
        </span>
    </span>

  
</div>

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody">
        <h1 id="http-二次复盘）"><a href="#http-二次复盘）" class="headerlink" title="http(二次复盘）"></a>http(二次复盘）</h1><h2 id="http-发展历程"><a href="#http-发展历程" class="headerlink" title="http/发展历程"></a>http/发展历程</h2><h3 id="http1-1"><a href="#http1-1" class="headerlink" title="http1.1"></a>http1.1</h3><ul>
<li><p>优势/主要是针对其格式方面的</p>
<ul>
<li><p>简单</p>
<ul>
<li>只由报文首部（由简单的文本形式构成）和报文主体来构成，结构简单</li>
</ul>
</li>
<li><p>灵活易扩展</p>
<ul>
<li><p>没有对http请求的方法/响应码做死规定，开发人员可以进行扩展</p>
</li>
<li><p>它的灵活性还体现在，它本身是在应用层的/之下的其它层可以随意变化</p>
<ul>
<li><p>https</p>
<ul>
<li>直接就在http和tcp之间加入了TLS/SSL安全传输层</li>
</ul>
</li>
<li><p>http3.0</p>
<ul>
<li>直接将tcp层换为了UDP层</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><p>跨平台</p>
<ul>
<li>移动端pc端/游戏</li>
</ul>
</li>
</ul>
</li>
<li><p>弊端</p>
<ul>
<li><p>无状态</p>
<ul>
<li>怎么解决这个问题/cookie 技术</li>
</ul>
</li>
<li><p>明文传输</p>
<ul>
<li>用https协议解决</li>
</ul>
</li>
</ul>
</li>
<li><p>性能</p>
<ul>
<li><p>长连接</p>
<ul>
<li>客户端在向服务器发出http请求的时候，之前要来建立tcp连接–你想想，你稳定连接都没有来建立怎么来发送请求//这里有问题</li>
<li>早在1.0版本的时候，每发一个请求，都要来建立一个tcp链接，那么就非常的消耗资源，那么为了解决这个问题，http1.1版本用长链接，只要双方没有主动断开连接的意愿，那么这个连接就不会断开//完全正确</li>
</ul>
</li>
<li><p>管道网络传输</p>
<ul>
<li><p>正是因为长连接给管道网络传输创造了条件</p>
</li>
<li><p>就是说在一次tcp连接中，同时发出多个http串行请求//并不是在多路复用</p>
<ul>
<li>这里我需要来补充一点就是说，虽然可以同时发出多个请求，但是服务器这里接收还是按照顺序的，也就是说还是会阻塞的</li>
</ul>
</li>
<li><p>想象这个管道，里面有好多好多请求，管道里通着水。</p>
</li>
</ul>
</li>
<li><p>弊端：队头阻塞</p>
<ul>
<li><p>怎么会出现这个状况</p>
<ul>
<li>原因就在于http1.1版本采取的是串行请求，可以理解为顺序请求，只要第一个请求发出，但是因为某种原因而被阻塞了，那么之后的请求也都会被阻塞，也就是说客户端会一直收不到想要的数据</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="HTTPS"><a href="#HTTPS" class="headerlink" title="HTTPS"></a>HTTPS</h3><h3 id="http2-0"><a href="#http2-0" class="headerlink" title="http2.0"></a>http2.0</h3><ul>
<li><p>特点</p>
<ul>
<li><p>报文格式采取二进制</p>
<ul>
<li><p>构成</p>
<ul>
<li>头信息帧</li>
<li>数据帧</li>
</ul>
</li>
<li><p>这样做的目的就是为了能够方便计算机接收数据</p>
</li>
</ul>
</li>
<li><p>报文的格式是一种数据流</p>
<ul>
<li><p>报文传输的过程是一种双向数据传输流</p>
<ul>
<li>彼此之间是以流的形式去传输的</li>
</ul>
</li>
</ul>
</li>
<li><p>多路复用</p>
<ul>
<li>其实就是http多个请求基于同一个tcp连接</li>
<li>移除了1.1的串行请求：也就是说可以并发接收请求（有点像异步，任何一个请求都不会阻塞其它请求）</li>
</ul>
</li>
<li><p>头部压缩技术</p>
<ul>
<li><p>为什么要有头部压缩技术–其实是因为header 里面存有一些固定的头字段：useragent cookie accept 等这些多达几百字节，并且还有好多的重复头部</p>
</li>
<li><p>HPACK压缩算法，废除了http1.1的起始行的概念，它将原来的url，请求头方法，全部转换为伪头字段,以冒号（：）开头eg:   :method, :status </p>
</li>
<li><p>给那些重复的字段信息，引入了静态表，双方会共同维护这个静态表</p>
<ul>
<li>但是如果没有在静态表里找到我想要的信息，之后会紧跟着一个动态表，会不断的更新信息</li>
<li>优势：减少请求的头部开销，提高网络传输的效率，如果有重复的头部信息，直接带上索引号就可以解决了</li>
</ul>
</li>
</ul>
</li>
<li><p>安全性</p>
<ul>
<li><p>基于TLS握手所构成的</p>
<ul>
<li>那为了能够区别于https，会在tls握手结束后发给服务器一个连接前言，告诉服务器，我是http2协议而不是其它的协议</li>
</ul>
</li>
</ul>
</li>
<li><p>服务端推送</p>
</li>
</ul>
</li>
<li><p>弊端</p>
<ul>
<li><p>其实这里只是解决了部分的对头阻塞（应用层，别忘了还有传输层的）问题：并没有完全的解决—为什么下层tcp就还是会出现队头阻塞问题-</p>
<ul>
<li>因为一旦tcp报文，有丢失直接触发了tcp的重传机制-服务器只有接收到了丢失的报文，才会去继续接收—也就是说其它报文来了也没用</li>
</ul>
</li>
</ul>
</li>
<li><p>核心：流与多路复用</p>
<ul>
<li><p>本质是双向的数据传输序列</p>
<ul>
<li>同一个id号</li>
</ul>
</li>
<li><p>流ID</p>
<ul>
<li><p>由于多路复用的问题-多个请求是乱发的</p>
<ul>
<li>并且发请求的时候头帧/数据帧是打乱的，但是属于同一个请求/回应的流的会分配相同的id</li>
<li>接收方根据流id重组，排序收来的帧，形成流</li>
</ul>
</li>
<li><p>但是由于http2里帧结构会有流标识符</p>
</li>
<li><p>具体就是当我此时发出一个请求后，这个请求会有一个流id，响应信息也会有一个与之相同的流id,这就意味同属一个流，即便</p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="http3-0版本"><a href="#http3-0版本" class="headerlink" title="http3.0版本"></a>http3.0版本</h3><ul>
<li><p>从根本上解决了队头阻塞</p>
<ul>
<li><p>为什么</p>
<ul>
<li>由于tcp建立的是可靠连接，所以当http包丢了会触发重传机制–也就会阻塞其它http请求–http2.0并没有完全的解决队头阻塞的问题</li>
</ul>
</li>
</ul>
</li>
<li><p>所以http下层的传输层采取了UDP</p>
<ul>
<li>udp采取的是不可靠传输–发了不管对方是否接收到–一个流阻塞了，仅阻塞这个流，其它流根本就不管</li>
</ul>
</li>
<li><p>安全性</p>
<ul>
<li><p>基于最新的TLS1.3</p>
<ul>
<li>但是，会将其警报消息，握手消息，封装为自己的QUIC帧</li>
<li>也就是说并不是完全的依赖于TLS协议</li>
</ul>
</li>
</ul>
</li>
<li><p>为什么要用不透明的ID意义是什么</p>
</li>
</ul>
<h2 id="请求方法"><a href="#请求方法" class="headerlink" title="请求方法"></a>请求方法</h2><h3 id="GET"><a href="#GET" class="headerlink" title="GET"></a>GET</h3><ul>
<li><p>安全幂等</p>
<ul>
<li>这里我印象中好像是因为是只读操作所以，不会对服务器的资源造成影响，所以是安全的/至于幂等应该是针对服务器来讲的，就是说多次操作不会造成服务器的资源改变//幂等可以这样来理解//所谓幂就是多次操作的意思</li>
</ul>
</li>
</ul>
<h3 id="POST"><a href="#POST" class="headerlink" title="POST"></a>POST</h3><ul>
<li>不安全也不幂等</li>
</ul>
<h3 id="put：完全更新"><a href="#put：完全更新" class="headerlink" title="put：完全更新"></a>put：完全更新</h3><ul>
<li>当需要修改信息时需要把整个字段发送给后端</li>
</ul>
<h3 id="patch"><a href="#patch" class="headerlink" title="patch"></a>patch</h3><ul>
<li><p>局部更新</p>
<ul>
<li>只需要把要更新的字段发送给后端，不需要把整个字段全部发送给后端，所以减少资源消耗</li>
</ul>
</li>
</ul>
<h2 id="状态码"><a href="#状态码" class="headerlink" title="状态码"></a>状态码</h2><h3 id="它有哪些分类呢"><a href="#它有哪些分类呢" class="headerlink" title="它有哪些分类呢"></a>它有哪些分类呢</h3><ul>
<li><p>1××</p>
<ul>
<li>服务器收到了客户端的请求（但是还没处理）</li>
</ul>
</li>
<li><p>2××</p>
<ul>
<li>收到了请求，并且产生了回应</li>
</ul>
</li>
<li><p>3××</p>
<ul>
<li>资源重定向，意思就是，服务器这里没有客户端想要的资源，响应头部包含了一个location,(告诉客户端你想要的资源都在这个地址去寻找吧）</li>
</ul>
</li>
<li><p>4××</p>
<ul>
<li>客户端错误（意思就是客户端访问了服务器所没有的资源）</li>
</ul>
</li>
<li><p>5××</p>
<ul>
<li>服务器错误（就是服务器自己出现了bug无法返回客户端所需要的资源)</li>
</ul>
</li>
</ul>
<h3 id="常见状态码"><a href="#常见状态码" class="headerlink" title="常见状态码"></a>常见状态码</h3><ul>
<li><p>200</p>
<ul>
<li>成功</li>
</ul>
</li>
<li><p>301</p>
<ul>
<li>永久重定向，就是说当第一次服务器给了客户端这个重定向地址之后，客户端再次访问的时候就会直接去访问</li>
</ul>
</li>
<li><p>302</p>
<ul>
<li>临时重定向，这个是每次客户端访问还是要访问原地址，之后再到重定向的地址eg:访问百度搜索引擎里的内容，都是先跳转至百度网址，然后再跳转至重定向的地址</li>
</ul>
</li>
<li><p>307</p>
<ul>
<li>也是重定向，但是这个是不会去改变请求方法的，这也是为什么既生302又为何有307</li>
</ul>
</li>
<li><p>304</p>
<ul>
<li>距离上次请求网页的内容不会改变，所以服务器不会来返回的内容，这个时候客户端应该是直接向本地缓存请求数据了</li>
</ul>
</li>
<li><p>404</p>
<ul>
<li>客户端错误，资源未找到，死就死吧</li>
</ul>
</li>
<li><p>500</p>
<ul>
<li>服务器本身错误</li>
</ul>
</li>
<li><p>504</p>
<ul>
<li><p>网关超时-服务器内部网络超时</p>
<ul>
<li>联想自己信息上报的。我死了。</li>
<li>网关或代理服务器向上游服务器，没有及时收到回应</li>
</ul>
</li>
</ul>
</li>
<li><p>502</p>
<ul>
<li>网关/代理服务器向上游服务器发送请求收到无效的回应</li>
</ul>
</li>
</ul>
<h2 id="组成"><a href="#组成" class="headerlink" title="组成"></a>组成</h2><h3 id="所谓超文本"><a href="#所谓超文本" class="headerlink" title="所谓超文本"></a>所谓超文本</h3><ul>
<li>就是图片/视频/连接</li>
<li>核心，在于有链接跳转至另一个超文本</li>
</ul>
<h3 id="传输"><a href="#传输" class="headerlink" title="传输"></a>传输</h3><ul>
<li><p>两点之间进行传输</p>
<ul>
<li>你怎么理解它这个两点之间的传输</li>
</ul>
</li>
</ul>
<h3 id="它是一种协议"><a href="#它是一种协议" class="headerlink" title="它是一种协议"></a>它是一种协议</h3><ul>
<li><p>它是一种双向传输协议</p>
<ul>
<li>就是说客户端与服务器通信，客户端发送请求，服务器响应请求/双向的</li>
</ul>
</li>
</ul>
<h2 id="Header"><a href="#Header" class="headerlink" title="Header"></a>Header</h2><h3 id="requiredheader"><a href="#requiredheader" class="headerlink" title="requiredheader"></a>requiredheader</h3><ul>
<li><p>Accept</p>
<ul>
<li>浏览器发出http的请求的目的是什么是不是在请求资源–但是浏览器并不是能够接受所有资源格式//  Accept 浏览器能够接受的资源格式</li>
</ul>
</li>
<li><p>Accept-encoding</p>
<ul>
<li><p>那现在浏览器已经能够接受到了资源–但是客户端的资源总是有限的此时服务器需要来压缩资源再发送给浏览器 </p>
<ul>
<li>那我总得告诉一下服务器我能够接受的压缩算法吧 Accept-encoding</li>
</ul>
</li>
</ul>
</li>
<li><p>Cookie</p>
<ul>
<li>Subtopic</li>
</ul>
</li>
<li><p>Host</p>
<ul>
<li>服务器的ip地址和端口号</li>
</ul>
</li>
<li><p>useragent</p>
<ul>
<li><p>包含着浏览器的信息/操作系统的信息</p>
<ul>
<li>比如我是windows/chrome浏览器</li>
</ul>
</li>
</ul>
</li>
<li><p>connection: keep-alive</p>
<ul>
<li>告诉服务器采取长连接模式</li>
</ul>
</li>
<li><p>Authorization-Bearer<token></p>
<ul>
<li>鉴权的责任-就交给熊大（er人）吧</li>
</ul>
</li>
<li><p>if-none-match</p>
</li>
<li><p>if-modify-since</p>
</li>
</ul>
<h3 id="responseheader"><a href="#responseheader" class="headerlink" title="responseheader"></a>responseheader</h3><ul>
<li><p>content-type</p>
<ul>
<li>服务器返回给浏览器的资源格式</li>
</ul>
</li>
<li><p>content-size</p>
<ul>
<li>返回的数据字节数</li>
</ul>
</li>
<li><p>content-Length</p>
<ul>
<li>返回的数据多少字节</li>
</ul>
</li>
<li><p>content-encoding</p>
<ul>
<li>服务器要告知我所采用的浏览器压缩格式目的是方便浏览器根据这个格式解压缩</li>
</ul>
</li>
<li><p>cache-control</p>
<ul>
<li><p>no-cache</p>
<ul>
<li>Subtopic</li>
</ul>
</li>
<li><p>no-store</p>
</li>
<li><p>publice</p>
</li>
<li><p>private</p>
</li>
</ul>
</li>
<li><p>Etag</p>
</li>
<li><p>connection: keep-alive</p>
<ul>
<li>服务器采取长连接模式</li>
</ul>
</li>
<li><p>LastModify</p>
</li>
<li><p>子主题</p>
</li>
</ul>
<h2 id="响应格式"><a href="#响应格式" class="headerlink" title="响应格式"></a>响应格式</h2><h3 id="响应行"><a href="#响应行" class="headerlink" title="响应行"></a>响应行</h3><ul>
<li>响应码</li>
<li>协议版本号</li>
</ul>
<h3 id="响应头部"><a href="#响应头部" class="headerlink" title="响应头部"></a>响应头部</h3><ul>
<li>access-control-allow-origin</li>
<li>cache-control</li>
</ul>
<h3 id="响应体"><a href="#响应体" class="headerlink" title="响应体"></a>响应体</h3><ul>
<li>对方请求的信息</li>
</ul>
<h2 id="请求格式"><a href="#请求格式" class="headerlink" title="请求格式"></a>请求格式</h2><h3 id="请求行"><a href="#请求行" class="headerlink" title="请求行"></a>请求行</h3><ul>
<li>请求方法</li>
<li>URL</li>
<li>协议版本</li>
</ul>
<h3 id="请求头部"><a href="#请求头部" class="headerlink" title="请求头部"></a>请求头部</h3><ul>
<li><p>就是header</p>
<ul>
<li>以键值对存储的</li>
</ul>
</li>
</ul>
<h3 id="请求正文"><a href="#请求正文" class="headerlink" title="请求正文"></a>请求正文</h3><ul>
<li>比如post要去携带一些信息</li>
</ul>
<h3 id="联想最近行情咋样，"><a href="#联想最近行情咋样，" class="headerlink" title="联想最近行情咋样，"></a>联想最近行情咋样，</h3>
    </div>

    
    
    

    <footer class="post-footer">

        

          <div class="post-nav">
            <div class="post-nav-item">
                <a href="/2020/12/19/JAVASCRIPT%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86%E4%BD%93%E7%B3%BB/" rel="prev" title="javascript 基础">
                  <i class="fa fa-chevron-left"></i> javascript 基础
                </a>
            </div>
            <div class="post-nav-item">
                <a href="/2020/12/19/V8%E5%BC%95%E6%93%8E%E5%A6%82%E4%BD%95%E6%9D%A5%E4%BC%98%E5%8C%96%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6%E6%9C%BA%E5%88%B6%E7%9A%84%C2%B7/" rel="next" title="优化垃圾回收机制">
                  优化垃圾回收机制 <i class="fa fa-chevron-right"></i>
                </a>
            </div>
          </div>
    </footer>
  </article>
</div>






</div>
  </main>

  <footer class="footer">
    <div class="footer-inner">


<div class="copyright">
  &copy; 
  <span itemprop="copyrightYear">2021</span>
  <span class="with-love">
    <i class="fa fa-heart"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">John Doe</span>
</div>
  <div class="powered-by">Powered by <a href="https://hexo.io/" rel="noopener" target="_blank">Hexo</a> & <a href="https://theme-next.js.org/pisces/" rel="noopener" target="_blank">NexT.Pisces</a>
  </div>

    </div>
  </footer>

  
  <script src="https://cdn.jsdelivr.net/npm/animejs@3.2.1/lib/anime.min.js" integrity="sha256-XL2inqUJaslATFnHdJOi9GfQ60on8Wx1C2H8DYiN1xY=" crossorigin="anonymous"></script>
<script src="/js/comments.js"></script><script src="/js/utils.js"></script><script src="/js/motion.js"></script><script src="/js/next-boot.js"></script>

  




  





</body>
</html>
